package 集合泛型练习;

import java.util.*;

public class Map集合 {
    public static void main(String[] args) {
        //1.创建Msp对象
        Map<Integer,String> map=new HashMap<>();
        //向map集合存入数据,注意方法是put并不是add并且需要存入kv的值
        map.put(587,"收到货");
        map.put(586,"收到货");
        map.put(857,"收货");
        map.put(5,"到货");
        map.put(7,"收");
        /**
         * 1.map中存放着的都是无序的数据
         * 2.map中的value可以重复-比如我们可以存两个收到货
         * 3.map中的key是不可以重复的如果重复后面的value会把前面的value覆盖
         */
        System.out.println(map);//查看map集合中的数据是否添加成功
        //3.进行方法的测试
        System.out.println(map.hashCode());//获取集合的哈希码值
        System.out.println(map.equals("收"));//判断'收"是否与集合对象相等
        System.out.println(map.isEmpty());//判断集合是否为空
        System.out.println(map.size());//获取集合中元素的个数

        //判断当前map集合中是否包含指定的key键
        System.out.println(map.containsKey(587));//true存在
        System.out.println(map.containsValue("收到货"));//true存在
        System.out.println(map.get(5));//根据key获取对应的value值
        System.out.println(map.remove(5));//根据key值对应的键值对,K与V都删除掉
        //System.out.println(map);
        System.out.println(map.containsKey(5));//查看删没删除key
        System.out.println(map.containsValue("到货"));//查看删没删除value
       // System.out.println(map);
        //将map集合中的所有value取出,放入Collection集合中
        Collection<String>values=map.values();
        System.out.println(values);//[收, 收货, 收到货, 收到货]
        //4.map集合的迭代方式1
        /**
         * 方式一
         * 遍历map集合中的数据,但是map集合本身是没有迭代器的,所以需要先转成set集合
         * Set<Key>:把map中的所有key值存入到set集合当中--ketSet()
         * 4.1将map集合中的key值取出存入set集合中,集合的泛型就是key的类型Integer
         */
        Set<Integer> keySet=map.keySet();
        //4.2想要遍历集合就需要获取集合的迭代器
        Iterator<Integer> it= keySet.iterator();
        while (it.hasNext()){
            Integer key=it.next();
            String value=map.get(key);
            System.out.println("{"+key+","+value+"}");
        }
        //方式二
        Set<Map.Entry<Integer,String>> set=map.entrySet();
        //获取迭代器
        Iterator <Map.Entry<Integer,String>> set2=set.iterator();
        while (set2.hasNext()){
            Map.Entry<Integer,String> entry=set2.next();
            Integer key=entry.getKey();//获取Entry中的key
            String value=entry.getValue();//获取Entry中的value
            System.out.println("{"+key+","+value+"}");
        }

    }
}
